﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;

namespace Sinacor.Infra.Common.Validation
{
    [DataContract(Namespace = "http://www.sinacor.com.br/Sinacor.Infra.Common.Validation/2008/08", Name = "ValidationResult")]
    public class ValidationResult
    {
        /// <summary>
        /// Cria uma nova instância de um resultado de validação válido
        /// </summary>
        public ValidationResult()
        { 
        }

        /// <summary>
        /// Cria uma nova instância de um resultado de validação inválido
        /// </summary>
        /// <param name="error">Erro de validação</param>
        public ValidationResult(ValidationError error)
        {
            if (error == null)
                throw new ArgumentNullException("error");

            _isValid = false;
            _error = error;
        }

        private bool _isValid = true;
        /// <summary>
        /// Indica se o resultado da validação é válido
        /// </summary>
        [DataMember(IsRequired = true, Name = "IsValid", Order = 1)]
        public bool IsValid 
        { 
            get { return _isValid; }
            set { _isValid = value; }
        }

        private ValidationError _error = null;
        /// <summary>
        /// Erro de validação
        /// </summary>
        [DataMember(IsRequired = true, Name = "ValidationError", Order = 2)]
        public ValidationError Error
        {
            get { return _error; }
            set { _error = value; }
        }
    }
}
